﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RoyEngine
{
    /// <summary>
    /// 使用RoyEngine的域类型必须继承的基类
    /// 类中需要存档的属性需要标注RoyValue或者RoyList特性
    /// 如果是Id没有赋值的话，将会在Save时自动分配一个唯一Id
    /// </summary>
    public class RoyDataBase
    {
        internal RoyCache Cache { get; set; }

        public string Id { get; set; }

        public RoyDataBase()
        {
        }
    }

    /// <summary>
    /// RoyEngine的基本类型特性
    /// 目前支持bool\int32\int64\string
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public class RoyValueAttribute : Attribute
    {
        /// <summary>
        /// 是否分组
        /// </summary>
        public bool Group { get; set; }

        /// <summary>
        /// 是否需要排序，支持Long/double类型
        /// </summary>
        public bool Sortable { get; set; }

        public SortType SortType { get; set; }

        public int SortSize { get; set; }

        public bool Desc { get; set; }
    }

    /// <summary>
    /// RoyEngine的列表类型
    /// 支持List<T>, T为RoyValue特性支持的几大基本类型
    /// </summary>
    [AttributeUsage(AttributeTargets.Property)]
    public class RoyListAttribute : Attribute
    {
        /// <summary>
        /// 是否不可重复
        /// </summary>
        public bool Unrepeatable { get; set; }
    }
}
